using System.Data.Entity.ModelConfiguration;
using InseSoft.Models.Entities;

namespace InseSoft.Models.Mapping
{
    public class ClienteMap : EntityTypeConfiguration<Cliente>
    {
        public ClienteMap()
        {
            // Primary Key
            HasKey(t => t.Id);

            // Properties
            Property(t => t.Nombre)
                .IsRequired()
                .HasMaxLength(50);

            Property(t => t.Cedula)
                .HasMaxLength(25);

            Property(t => t.Telefono)
                .HasMaxLength(20);

            Property(t => t.ContactoNombre)
                .HasMaxLength(50);

            Property(t => t.ContactoTelefono)
                .HasMaxLength(20);

            Property(t => t.ContactoExtension)
                .HasMaxLength(10);

            Property(t => t.ContactoCorreo)
                .HasMaxLength(50);

            // Table & Column Mappings
            ToTable("Cliente");
            Property(t => t.Id).HasColumnName("Id");
            Property(t => t.Nombre).HasColumnName("Nombre");
            Property(t => t.Cedula).HasColumnName("Cedula");
            Property(t => t.Telefono).HasColumnName("Telefono");
            Property(t => t.ContactoNombre).HasColumnName("ContactoNombre");
            Property(t => t.ContactoTelefono).HasColumnName("ContactoTelefono");
            Property(t => t.ContactoExtension).HasColumnName("ContactoExtension");
            Property(t => t.ContactoCorreo).HasColumnName("ContactoCorreo");
            Property(t => t.EmpresaId).HasColumnName("EmpresaId");
            Property(t => t.Activo).HasColumnName("Activo");

            // Relationships
            HasRequired(t => t.Empresa)
                .WithMany(t => t.Clientes)
                .HasForeignKey(d => d.EmpresaId);

        }
    }
}
